Field of the Invention
Embodiments of the present invention relate generally to graphics processing and, more specifically, to heuristics for improving performance in a tile-based architecture.
Description of the Related Art
Various graphics systems implement a tiling architecture that divides the screen-space into “tiles” and processes data associated with each tile in a particular order. That is, data associated with a first tile is processed first, data associated with a second tile is processed second, and so on. In such graphics systems, a highly parallel architecture may be implemented such that the work associated with one or more tiles is distributed to different processing entities.
In one approach to distributing work in a highly parallel architecture, graphics data received from a world-space pipeline is buffered prior to being transmitted to a number of different processing entities in one or more screen-space pipelines. By buffering the graphics data, the graphics data can be sorted and transmitted to the screen-space pipeline according to the tile(s) with which the graphics data is associated. Consequently, the graphics data can be distributed to, and processed by, the one or more screen-space pipelines in a more efficient manner. As an example, graphics data may be buffered and analyzed to determine the most efficient order in which to process the data and/or to determine which processing entities can process the data most efficiently.
One drawback to buffering graphics data, as described above, is that, under certain circumstances, buffering graphics data may negatively impact processing efficiency. For example, in some cases, buffering certain types of graphics data may consume resources (e.g., shared memory) in a graphics system such that insufficient resources are available when rendering operations are later performed with respect to the buffered graphics data. As a result, overall processing efficiency may be decreased.
In addition, under certain circumstances, dividing the screen-space into tiles and processing data associated with each tile in a particular order may be less efficient than simply processing data in the original order specified by the application programming interface (API). For example, dividing the screen-space into tiles may increase the overhead associated with processing certain types of graphics data to the point where tile-based processing is less efficient than simply processing the data according to the original API order.
As the foregoing illustrates, what is needed in the art are more effective approaches to implementing tiling functionality in graphics processing systems.